import { http } from '../../utils/requestUtil'

Page({
  /**
   * 页面的初始数据
   */
  data: {
    detailMemo: {
      content: "便签内容",
      createTime: "2025-06-10 18:38:17",
      importance: "0",
      title: "便签标题",
      userId: 1,
    },
    isEditing: false,
    importanceList: ['重要', '普通', '备忘'],
    importanceIndex: 0,
    originalMemo: null, // 保存原始数据用于取消编辑时恢复
  },

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    console.log(options)
    const res = await http.get("/memo/note/" + options.id)
    this.setData({
      detailMemo: res.data,
      importanceIndex: parseInt(res.data.importance)
    })
    console.log(res.data)
  },

  /**
   * 开始编辑便签
   */
  startEdit() {
    // 保存原始数据备份
    this.setData({
      isEditing: true,
      originalMemo: JSON.parse(JSON.stringify(this.data.detailMemo))
    })
  },

  /**
   * 取消编辑，恢复原始数据
   */
  cancelEdit() {
    this.setData({
      isEditing: false,
      detailMemo: this.data.originalMemo
    })
  },

  /**
   * 标题输入事件
   */
  onTitleInput(e) {
    const detailMemo = this.data.detailMemo
    detailMemo.title = e.detail.value
    this.setData({ detailMemo })
  },

  /**
   * 内容输入事件
   */
  onContentInput(e) {
    const detailMemo = this.data.detailMemo
    detailMemo.content = e.detail.value
    this.setData({ detailMemo })
  },

  /**
   * 重要性选择事件
   */
  onImportanceChange(e) {
    const importanceIndex = e.detail.value
    const detailMemo = this.data.detailMemo
    detailMemo.importance = importanceIndex
    this.setData({ importanceIndex, detailMemo })
  },

  /**
   * 保存便签
   */
  async saveMemo() {
    const { title, content, importance } = this.data.detailMemo
    
    // 简单验证
    if (!title.trim()) {
      wx.showToast({
        title: '标题不能为空',
        icon: 'none'
      })
      return
    }
    
    try {
      // 调用更新接口
      const res = await http.put("/memo/note", this.data.detailMemo)
      
      if (res.code === 200) {
        wx.showToast({
          title: '保存成功',
          icon: 'success'
        })
        
        // 更新页面状态
        this.setData({
          isEditing: false,
          // 'detailMemo.updateTime': new Date().format('yyyy-MM-dd hh:mm:ss')
        })
      } else {
        wx.showToast({
          title: res.msg || '保存失败',
          icon: 'none'
        })
      }
    } catch (error) {
      console.error('保存便签失败:', error)
      wx.showToast({
        title: '保存失败，请稍后重试',
        icon: 'none'
      })
    }
  },

  /**
   * 格式化日期的工具方法（可添加到utils中）
   */
  formatDate(date, fmt) {
    date = new Date(date)
    const o = {
      'M+': date.getMonth() + 1,
      'd+': date.getDate(),
      'h+': date.getHours(),
      'm+': date.getMinutes(),
      's+': date.getSeconds(),
      'q+': Math.floor((date.getMonth() + 3) / 3),
      'S': date.getMilliseconds()
    }
    if (/(y+)/.test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
    }
    for (const k in o) {
      if (new RegExp('(' + k + ')').test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
      }
    }
    return fmt
  }
})
